package com.ctshk.rpc.finance.service;


import com.ctshk.common.dto.Result;
import com.ctshk.common.model.PageResponse;
import com.ctshk.rpc.finance.dto.supplier.SupplierOrderListDTO;
import com.ctshk.rpc.finance.dto.supplier.SupplierReconciliationChooseListDTO;
import com.ctshk.rpc.finance.dto.supplier.SupplierReconciliationDTO;
import com.ctshk.rpc.finance.dto.supplier.SupplierReconciliationListDTO;
import com.ctshk.rpc.finance.req.supplier.*;

import java.util.List;

/**
 * <p>
 * 财务供应商对账单 服务类
 * </p>
 *
 * @author 叶冠峰
 * @since 2021-04-08
 */
public interface IFinanceSupplierReconciliationService {

    /**
     * 列表
     * @param req
     * @return
     */
    Result<PageResponse<SupplierReconciliationListDTO>> list(SupplierReconciliationListReq req);

    /**
     * 详情
     * @param req
     * @return
     */
    Result<SupplierReconciliationDTO> detail(SupplierReconciliationIdReq req);

    /**
     * 新增/编辑对账单
     * @param req
     * @return
     */
    Result add(SupplierReconciliationAddReq req);

    /**
     * 提交审批
     * @param req
     * @return
     */
    Result commit(SupplierReconciliationIdReq req);

    /**
     * 审批
     * @param req
     * @return
     */
    Result aproval(AprovalReq req);

    /**
     * 申请供应商实付-选择供应商对账单列表
     * @param req
     * @return
     */
    Result<PageResponse<SupplierReconciliationChooseListDTO>> chooseList(SupplierReconciliationChooseListReq req);

    /**
     * 删除
     * @param req
     * @return
     */
    Result del(SupplierReconciliationIdReq req);

    /**
     * 供应商对账-供应商往来订单列表
     * @param req
     * @return
     */
    Result<PageResponse<SupplierOrderListDTO>> supplierOrderList(SupplierOrderListReq req);

    /**
     * 根据供应商预订单ID批量获取（内部接口）
     * @param idList
     * @return
     */
    Result<List<SupplierReconciliationAmountDTO>> getByOrderIdList(List<Long> idList);
}
